package com.shuda.business.channel.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;

import java.time.LocalDateTime;

/**
 * 分发方案实体类
 */
@TableName("channel_distribution_scheme")
@Schema(name = "DistributionSchemeEntity", description = "分发方案实体")
public class DistributionSchemeEntity {

    @TableId(type = IdType.AUTO)
    @Schema(description = "方案ID")
    private Long id;

    @Schema(description = "方案名称")
    private String schemeName;

    @Schema(description = "方案编码")
    private String schemeCode;

    @Schema(description = "上游渠道ID")
    private Long upstreamChannelId;

    @Schema(description = "上游渠道名称")
    private String upstreamChannelName;

    @Schema(description = "下游渠道ID")
    private Long downstreamChannelId;

    @Schema(description = "下游渠道名称")
    private String downstreamChannelName;

    @Schema(description = "分发规则配置(JSON)")
    private String distributionRules;

    @Schema(description = "地域规则配置(JSON)")
    private String regionRules;

    @Schema(description = "产品类型规则配置(JSON)")
    private String productTypeRules;

    @Schema(description = "客户画像规则配置(JSON)")
    private String customerProfileRules;

    @Schema(description = "数据池配置(JSON)")
    private String dataPoolConfig;

    @Schema(description = "方案状态(enabled-启用,disabled-禁用)")
    private String schemeStatus;

    @Schema(description = "优先级")
    private Integer priority;

    @Schema(description = "描述")
    private String description;

    @Schema(description = "创建人")
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    @Schema(description = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @Schema(description = "更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    @Schema(description = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    @Schema(description = "逻辑删除标识(0-未删除,1-已删除)")
    @TableLogic
    @TableField(fill = FieldFill.INSERT)
    private Integer deleted;

    /**
    *
    * DistributionSchemeEntity 主键ID访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 显式提供id访问器，避免Lombok依赖导致的方法缺失
    * @date 2025-11-09 23:30
    */
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    /**
    *
    * 方案名称访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供方案名称getter/setter
    * @date 2025-11-09 23:30
    */
    public String getSchemeName() { return schemeName; }
    public void setSchemeName(String schemeName) { this.schemeName = schemeName; }

    /**
    *
    * 方案编码访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供方案编码getter/setter
    * @date 2025-11-09 23:30
    */
    public String getSchemeCode() { return schemeCode; }
    public void setSchemeCode(String schemeCode) { this.schemeCode = schemeCode; }

    /**
    *
    * 上游渠道ID访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供上游渠道ID getter/setter
    * @date 2025-11-09 23:30
    */
    public Long getUpstreamChannelId() { return upstreamChannelId; }
    public void setUpstreamChannelId(Long upstreamChannelId) { this.upstreamChannelId = upstreamChannelId; }

    /**
    *
    * 上游渠道名称访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供上游渠道名称getter/setter
    * @date 2025-11-09 23:30
    */
    public String getUpstreamChannelName() { return upstreamChannelName; }
    public void setUpstreamChannelName(String upstreamChannelName) { this.upstreamChannelName = upstreamChannelName; }

    /**
    *
    * 下游渠道ID访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供下游渠道ID getter/setter
    * @date 2025-11-09 23:30
    */
    public Long getDownstreamChannelId() { return downstreamChannelId; }
    public void setDownstreamChannelId(Long downstreamChannelId) { this.downstreamChannelId = downstreamChannelId; }

    /**
    *
    * 下游渠道名称访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供下游渠道名称getter/setter
    * @date 2025-11-09 23:30
    */
    public String getDownstreamChannelName() { return downstreamChannelName; }
    public void setDownstreamChannelName(String downstreamChannelName) { this.downstreamChannelName = downstreamChannelName; }

    /**
    *
    * 分发规则配置访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供分发规则配置getter/setter
    * @date 2025-11-09 23:30
    */
    public String getDistributionRules() { return distributionRules; }
    public void setDistributionRules(String distributionRules) { this.distributionRules = distributionRules; }

    /**
    *
    * 地域规则配置访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供地域规则配置getter/setter
    * @date 2025-11-09 23:30
    */
    public String getRegionRules() { return regionRules; }
    public void setRegionRules(String regionRules) { this.regionRules = regionRules; }

    /**
    *
    * 产品类型规则配置访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供产品类型规则配置getter/setter
    * @date 2025-11-09 23:30
    */
    public String getProductTypeRules() { return productTypeRules; }
    public void setProductTypeRules(String productTypeRules) { this.productTypeRules = productTypeRules; }

    /**
    *
    * 客户画像规则配置访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供客户画像规则配置getter/setter
    * @date 2025-11-09 23:30
    */
    public String getCustomerProfileRules() { return customerProfileRules; }
    public void setCustomerProfileRules(String customerProfileRules) { this.customerProfileRules = customerProfileRules; }

    /**
    *
    * 数据池配置访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供数据池配置getter/setter
    * @date 2025-11-09 23:30
    */
    public String getDataPoolConfig() { return dataPoolConfig; }
    public void setDataPoolConfig(String dataPoolConfig) { this.dataPoolConfig = dataPoolConfig; }

    /**
    *
    * 方案状态访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供方案状态getter/setter
    * @date 2025-11-09 23:30
    */
    public String getSchemeStatus() { return schemeStatus; }
    public void setSchemeStatus(String schemeStatus) { this.schemeStatus = schemeStatus; }

    /**
    *
    * 优先级访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供优先级getter/setter
    * @date 2025-11-09 23:30
    */
    public Integer getPriority() { return priority; }
    public void setPriority(Integer priority) { this.priority = priority; }

    /**
    *
    * 描述访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供描述getter/setter
    * @date 2025-11-09 23:30
    */
    public String getDescription() { return description; }
    public void setDescription(String description) { this.description = description; }

    /**
    *
    * 创建人访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供创建人getter/setter
    * @date 2025-11-09 23:30
    */
    public String getCreateBy() { return createBy; }
    public void setCreateBy(String createBy) { this.createBy = createBy; }

    /**
    *
    * 创建时间访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供创建时间getter/setter
    * @date 2025-11-09 23:30
    */
    public LocalDateTime getCreateTime() { return createTime; }
    public void setCreateTime(LocalDateTime createTime) { this.createTime = createTime; }

    /**
    *
    * 更新人访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供更新人getter/setter
    * @date 2025-11-09 23:30
    */
    public String getUpdateBy() { return updateBy; }
    public void setUpdateBy(String updateBy) { this.updateBy = updateBy; }

    /**
    *
    * 更新时间访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供更新时间getter/setter
    * @date 2025-11-09 23:30
    */
    public LocalDateTime getUpdateTime() { return updateTime; }
    public void setUpdateTime(LocalDateTime updateTime) { this.updateTime = updateTime; }

    /**
    *
    * 删除标记访问器
    * @param $params$
    * @return $returns$
    * @author ink
    * @Description: 提供删除标记getter/setter
    * @date 2025-11-09 23:30
    */
    public Integer getDeleted() { return deleted; }
    public void setDeleted(Integer deleted) { this.deleted = deleted; }
}